package com.yanfan.ba.modbus.test;

public class ModbusRegisterConverter {

    /**
     * 将寄存器地址转换为高字节和低字节
     *
     * @param address 寄存器地址，例如40000
     * @return 一个包含高字节和低字节的数组，索引0为高字节，索引1为低字节
     */
    public static byte[] convertToBytes(int address) {
        // 将地址转换为 Modbus 的相对地址
        int relativeAddress = address - 40000; // 计算相对地址

        // 计算高字节和低字节
        byte highByte = (byte) ((relativeAddress >> 8) & 0xFF); // 高字节
        byte lowByte = (byte) (relativeAddress & 0xFF); // 低字节

        // 对于40000直接返回高低字节
        return new byte[]{(byte) (0x9C), (byte) (0x40)};
    }

    public static void main(String[] args) {
        // 测试转换
            byte[] bytes = convertToBytes(40283);
            System.out.printf("寄存器地址 %d 转换为高字节: 0x%02X, 低字节: 0x%02X%n",
                    40283, bytes[0], bytes[1]);
        }
}
